var site=new Class();
site.prototype = {
	//****************************************************************************************//
	//	initialize：初始化对象
	//	objArr：三个下拉框对象数组
	//	objSpan：三个下拉框所属SPAN对象数组
	//	objTxt：用户自定义输入的文本框对象
	//	subTxt：存放提交和返回的数据的文本框对象，格式为“省;市;区”，
	//					未填的以0补齐
	//	data：地区信息的数组数据
	//****************************************************************************************//
	initialize:function(objArr, objSpan, objTxt, subTxt, data, errInfo, errSpan){
		this.objArr = objArr;
		this.objSpan = objSpan;
		this.objTxt = objTxt;
        var tmpCout = 0,subTxtString = subTxt.value;
        tmpCout = (3 - subTxt.value.split(";").length);
        while(tmpCout > 0){
            subTxtString += ";";
            tmpCout -- ;
        }             
		this.subTxt = subTxt;
		this.data  = data;
		this.errInfo = errInfo;
		this.errSpan = errSpan;
		this.objArr[0].onchange = this.changeOBJ1.bindAsEventListener(this);
		this.objArr[1].onchange = this.changeOBJ2.bindAsEventListener(this);
		this.objArr[2].onchange = this.changeOBJ3.bindAsEventListener(this);
		this.initSelect();
		this.changeOBJ1(subTxtString.split(";"));
	},
	//****************************************************************************************//
	//	setSelect：判断某字符串在某下拉框总是否有选项对应
	//	o：下拉框对象
	//	val：需要判断的字符串
	//	输出：有对应选项，则选中该项，并返回true；否则返回false
	//****************************************************************************************//
	setSelect : function(o, val){
		for (i=0;i<o.options.length;i++){
			if(o.options[i].value==val){
				o.selectedIndex = i;
				return true;
			}
		}
		return false;
	},
	//****************************************************************************************//
	//	otherchange：某下拉框选择其他时的事件
	//	obj：下拉框对象
	//	no：第几级下拉框
	//	val：选择其他时自定义填入文本框的值
	//	输出：选择其他时返回false；否则返回true
	//****************************************************************************************//
	otherchange : function(obj, no, val){
		var bol = (obj.value == "其他")?false:true;
		for(var i=2; i>=no; i--){
			this.objSpan[i].style.display = bol?"":"none";
		}
		this.objTxt.style.display = bol?"none":"";
        if(this.objTxt.style.display == "none") this.objTxt.value="";
        else this.objTxt.value = val != null? val : "";
		return bol;
	},
	//****************************************************************************************//
	//	changeOBJ3：第三级下拉框的事件
	//	strArr：后台返回的用户信息字符串
	//****************************************************************************************//
	changeOBJ3 : function(strArr){
		if(strArr != null && strArr.length >= 3){
			if(strArr[2] == "") this.objArr[2].selectedIndex = 0;
			else if(!this.setSelect(this.objArr[2], strArr[2]))
				this.objArr[2].value = "其他";
		}
		this.otherchange(this.objArr[2], 3,  strArr[2]);
	},
	//****************************************************************************************//
	//	changeOBJ2：第二级下拉框的事件
	//	strArr：后台返回的用户信息字符串
	//****************************************************************************************//
	changeOBJ2 : function (strArr){	
		if(strArr != null && strArr.length >= 3){
			if(strArr[1] == "") this.objArr[1].selectedIndex = 0;
			else if(!this.setSelect(this.objArr[1], strArr[1]))
				this.objArr[1].value = "其他";
		}
		if(this.otherchange(this.objArr[1], 2, strArr[1])){
			var arr = this.data[this.objArr[0].selectedIndex].sub[this.objArr[1].selectedIndex].sub;
			if(arr && arr.length>0){//以防止有些县市下面没有区
				for(var i=0, n=arr.length; i<n; i++){
					this.objArr[2].options[i]= new Option(arr[i].name, arr[i].name);
				}
				this.objArr[2].length = arr.length;
				this.objArr[2].selectedIndex = 0;
				this.changeOBJ3(strArr);
			}else{
				this.objSpan[2].style.display = "none";
			}
		}
	},
	//****************************************************************************************//
	//	changeOBJ1：第一级下拉框的事件
	//	strArr：后台返回的用户信息字符串
	//****************************************************************************************//
	changeOBJ1 : function (strArr){
		var obj1 = this.objArr[0];
		if(strArr != null && strArr.length >= 3){
			if(strArr[0] == "") this.objArr[0].selectedIndex = 0;
			else if(!this.setSelect(this.objArr[0], strArr[0]))
				this.objArr[0].value = "其他";
		}
		if(this.otherchange(this.objArr[0], 1, strArr[0])){
			var arr = arrCity[this.objArr[0].selectedIndex].sub;
			for(var i=0, n=arr.length; i<n; i++){
				this.objArr[1].options[i]= new Option(arr[i].name, arr[i].name);
			}
			this.objArr[1].length = arr.length;
			this.objArr[1].selectedIndex = 0;	
			this.changeOBJ2(strArr);
		}
	},
	//****************************************************************************************//
	//	initSelect：页面加载时初始化下拉框
	//****************************************************************************************//
	initSelect : function (){
		for(var i=0,n=this.data.length; i<n; i++){
			this.objArr[0].options[i]= new Option(this.data[i].name, this.data[i].name);
		}
		this.objArr[0].length = this.data.length;
		this.objArr[0].selectedIndex = 0;	
	},
	//****************************************************************************************//
	//	checkPostData：页面提交时检验数据
	//****************************************************************************************//
	checkPostData : function (){
		if(this.objTxt.style.display == ""){
			if(this.objTxt.value == "") 
				return this.insertHtml(this.errSpan, this.errInfo[0]);
			if(valLeng(this.objTxt.value, 20))
				return this.insertHtml(this.errSpan, this.errInfo[1]);
            if(this.objTxt.value.indexOf(";")>=0)
                return this.insertHtml(this.errSpan, this.errInfo[2]);
		}
		return true;
	},
	insertHtml : function(obj, str){
		obj.innerHTML = str;
		return false;
	},
	//****************************************************************************************//
	//	setPostData：页面提交时拼装数据
	//****************************************************************************************//
	setPostData : function (){
		var bol = true, strPostData = "", o,oo;
		for(var i=0; i<3; i++){
		 	oo = this.objArr[i];
            o =  this.objSpan[i];
            if(o.style.display == "none" || oo.value == "请选择") 
				strPostData +=  ";";
			else if(oo.value == "其他"){
		 		strPostData += this.objTxt.value + ";";
                if(i == 0) strPostData += ";;";
                else if(i == 1) strPostData += ";";
                break;
            }
			else 
				strPostData += oo.value + ";";
		}
		this.subTxt.value = strPostData.substring(0, strPostData.length-1);
	}
}

